#ifndef SEND_MULTIPLE_AREA_H
#define SEND_MULTIPLE_AREA_H

#include <QWidget>
#include <QSerialPort>

#include "sundry.h"

#include <QTimer>
#include <QTableWidget>

namespace Ui {
class SendMultipleArea;
}

class SendMultipleArea : public QWidget
{
    Q_OBJECT

public:
    explicit SendMultipleArea(QWidget *parent = nullptr);
    ~SendMultipleArea();

private:
    Ui::SendMultipleArea *ui;
private:
    bool portState = false; // 串口是否打开
private:
    EncodingEnum localEncoding=EncodingEnum::UTF8;//本机编码

public:
    /**
     * @brief 根据串口是否打开设置一些组件
     * @param checked
     */
    void setSomeComponents(bool checked);

private:
    /**
     * @brief 导入表格文件
     * @param fileName 文件完整路径
     * @param encodingName 文件编码字符串 UTF8 GB18030...
     */
    void ImportFormFile(QString fileName, QByteArray encodingName);

private:

    int m_currentRow=0;//自动发送的当前行号
    QTimer* timer=nullptr;//自动发送的定时器
    /**
     * @brief 自动发送，定时器触发时调用
     */
    void autoSend(void);
public:
    /**
     * @brief 开启、改变周期或关闭自动发送
     * @param checked 开启或关闭
     * @param cycle 周期
     */
    void setAutoSendState(bool checked, int cycle);

signals:
    /**
     * @brief 请求发送
     * @param data 数据
     */
    void requestToSend(QString data);

    /**
     * @brief 串口打开情况
     * @param state 状态 true 已经打开 false 已经关闭
     * @note Qt信号
     */
    void portStateChange(bool state);
};

#endif // SEND_MULTIPLE_AREA_H
